<?php

    function getBytes($string)
    {
        $bytes = array();
        $i = 0;
        for($i = 0; $i < strlen($string); $i++)
        {
            $bytes[$i] = ord($string[$i]);
        }
        return $bytes;
    }
    
    function decodeMessage($message)
    {
        $len = strlen($message);
        $i = 0;
        $out = '';
        $out .= $message[$i++];
        while($i < $len - 1)
        {
            if(ord($message[$i]) == 0x7D)
            {
                if(ord($message[$i + 1]) == 0x01)
                {
                    $out .= chr(0x7D);
                    $i += 2;
                }
                else if(ord($message[$i + 1]) == 0x02)
                {
                    $out .= chr(0x7E);
                    $i += 2;
                }
            }
            else
            {
                $out .= $message[$i++];
            }
        }
        $out .= $message[$i++];
        //echo "<p>decodeMessage:".bin2hex($out)."</p>";
        return $out;
    }
    
    function encodeMessage($message)
    {
        $byteArray = hex2bin($message);
        $len = strlen($byteArray);
        $i = 0;
        $out = '';
        $out .= $byteArray[$i++];
        while($i < $len - 1)
        {
            if(ord($byteArray[$i]) == 0x7D)
            {
                $out .= chr(0x7D);
                $out .= chr(0x01);
                $i++;
            }
            else if(ord($byteArray[$i]) == 0x7E)
            {
                $out .= chr(0x7D);
                $out .= chr(0x02);
                $i++;
            }
            else
            {
                $out .= $byteArray[$i++];
            }
        }
        $out .= $byteArray[$i++];
        //echo '<p>encodeMessage:'.bin2hex($out)."</p>";
        return $out;
    }
    
    function checkSum($str)
    {
        $i = 0;
        $cks = 0;
        //echo "checkSum  str:$str\n";
        $ascStr = hex2bin($str);
        $len = strlen($ascStr);
        //echo "checkSum  len:$len\n";
        for($i = 0; $i < $len; $i+=1)
        {
            $cks ^= ord($ascStr[$i]);
            //echo "<p>cks:$cks   data:".ord($ascStr[$i])."</p>";
        }
        //echo "<p>checkSum result cks:$cks</p>";
        return $cks;
    }
?>